package cn.swing.ushare.user.service;


import cn.swing.ushare.pojo.dto.*;

import cn.swing.ushare.pojo.vo.*;

import java.util.List;


public interface IUserService {


    List<RoleListVO> roleList();


    UserDetailsVO getUserDetailsById(Integer id);


    UserCenterDetailsVO getUserCenterDetailsById(Integer id);


    UserCenterHeaderVO getUserCenterHeaderById(Integer id);


    int updateEnabledById(Integer id);


    int updateUserRole(UserUpdateRoleDTO userUpdateRoleDTO);

    /****************************************ljk改**********************************/
//    Map<String, Object> limitedUser(Integer pageNo);
//    List<UserListVO> userListByNickname(String nickname);
    //List<UserListVO> userList();
    List<UserListVO> userList(UserLimitSimpleDTO userLimitSimpleDTO);

    PersonalSimpleVO getPersonalSimple();

    Integer updatePassByUsername(UserChangePasswordDTO userChangePasswordDTO);

    /****************************************ljk改**********************************/

    List<CategorySimpleVO> getUserCenterCategory(Integer id);


    List<CategorySimpleVO> getAllCategory(Integer id);

    String getCurrentAvatar(Integer id);

    UserCenterHeaderVO getArticleDetailsUserInfoById(Integer id);

    List<UserSimpleVO> getAllFollows(Integer id);

    List<UserSimpleVO> getAllFans(Integer id);

    boolean isFollow(Integer id,Integer userId);

    int insertFollow(Integer id,Integer userId);

    int deleteFollow(Integer id, Integer userId);

    void insertRole(String roleName);


    boolean login(UserLoginDTO userLoginDTO);

    Integer countUser(String nickname);

    void deleteRoleById(Integer id);

    int updateUserCenterDetails(UserCenterDetailsDTO userCenterDetails);

    int deleteUserCenterCategoryById(Integer userId);

    int insertUserCenterCategories(List<UserCenterCategoryDTO> userCenterCategories);

    List<PermissionListVO> getPermissions();


    List<SelectPermissionVO> getPermissionById(Integer roleId);

    int changeRoleOperation(List<ChangeRoleOperationDTO> changeRoleOperations);

    String insertRegister(UserRegisterSimpleDTO userRegisterSimpleDTO);

    /**
     * 更换用户头像
     * @param userId 用户id
     * @param imgUrl 用户的新头像
     * @return 受影响的行数
     */
    int updateUserAvatar(Integer userId,String imgUrl);




    String selectUsernameByNickname(String nickname);

    /**
     * 根据用户名获取当前登录的用户ID
     * @return
     */
    Integer getLoginUserId();

    /**
     * 根据id来判断当前用户个人信息是否完善
     * @param id
     * @return
     */
    String PerfectInformation(Integer id);

    /**
     * 增加用户表中用户的关注量
     * @param userId
     * @return
     */
    Integer addUserFollowers(Integer userId);
    /**
     * 增加用户表中用户的关注量
     * @param userId
     * @return
     */
    Integer subUserFollowers(Integer userId);


    /**
     * 增加用户表中用户的关注量
     *
     * @param userId
     * @return
     */
    Integer addUserFans(Integer userId);

    /**
     * 减少用户表中用户的粉丝量
     *
     * @param userId
     * @return
     */
    Integer subUserFans(Integer userId);
}
